#include "Contenido.h"
#include "Escenario.h"
#include "Pantalla.h"

#include <Math.h>

bool Contenido::tamanioCaminoCalculado = false;
int Contenido::altoContenido = 0 ;
int Contenido::anchoContenido = 0 ;

Contenido::Contenido(){
	this->texturaBMP = 0;
	this->freeTextura = false;
}

int Contenido::getAnchoContenido(){
	return Contenido::anchoContenido ;
}

int Contenido::getAltoContenido(){
	return Contenido::altoContenido;
}

void Contenido::resolverTextura(const string& path){
	// ALPHA #ffffff necesario por el color de los caminos, asi oculta lo blanco.
	Textura* textBMP = new Textura("camino",path,0,0,0,0,"#ffffff",0, 10);
	this->freeTextura = true;
	this->setTexturaBMP(textBMP);
	this->resolverTextura();
}

void Contenido::resolverTextura(){
	if(!Contenido::tamanioCaminoCalculado){
		int altoPantalla = Pantalla::getInstance()->getAlto();
		int anchoPantalla = Pantalla::getInstance()->getAncho();
		int cantFilaGrilla = Escenario::getInstance()->getGrilla()->getFilas() /*+ 1*/ ;
		int cantColGrilla = Escenario::getInstance()->getGrilla()->getColumnas() /* + 1 */ ;
		Contenido::tamanioCaminoCalculado = true;
		//////////////////////////////////////////
		// PARA MANTENER EL ESCENARIO CUADRADO 
		////////////////////////////////////////////
		Contenido::altoContenido = (int)floor( (float)(altoPantalla / cantFilaGrilla) );
		Contenido::anchoContenido = Contenido::altoContenido; //(int)floor( (float)(anchoPantalla / cantColGrilla) );
	}
	if(this->getTexturaBMP() && this->getTexturaBMP()->getImagen()){
		this->getTexturaBMP()->getImagen()->redimensionar(altoContenido,anchoContenido);
		Pantalla::getInstance()->agregarContenido(this);
	}
}

int Contenido::getFila(){
	return this->fila;
}

int Contenido::getColumna(){
	return this->columna;
}

Textura* Contenido::getTexturaBMP(){
	return this->texturaBMP;
}

char Contenido::getTextura(){
	return this->textura;
}

string Contenido::getTipoTextura(){
	return this->tipoTextura;
}

void Contenido::setPosicion(int fila, int columna){

	this->fila = fila;
	this->columna = columna;
}

void Contenido::setTexturaBMP(Textura* textura){	
	this->texturaBMP = textura;
}

void Contenido::setTextura(char textura){	
	this->textura = textura;
}

void Contenido::setTextura(const string& textura){	
	this->tipoTextura = textura;
}

Contenido::~Contenido(){
	
	if(this->texturaBMP && this->freeTextura)
			delete this->texturaBMP;
}